AWS IAM
https://gyazo.com/9b925fd5673cad078a173736c68dc591
https://gyazo.com/93900b3c2dcf99d5448f1716c7b080a3
AWS IAM(アイアム)とは
Identity and Access Management
AWS Serviceの一つで、「認証」と「認可」の設定を行うことができる
AWSを利用する上では必須知識なので折を見て勉強しましょうtsawada.icon
下に説明資料を用意したので見てください
よくみる資料
IAM Service固有のResource/Actionの洗い出し方
関連資料
AWS IAM 〜 設計上の戦略と戦術 / 20191109-kof-iam - Speaker Deck
↑↑これもめちゃわかりやすかったtsawada.icon
IAMは使い回すべきか?個別に分けるべきか?
hr.icon
hr.icon
以下、AWS IAMについて理解するための説明資料
目次
(概要部分)
IAMを理解しないと、AWSで何もできない
IAMで再頻出の「IAM Role」
AWSを人が操作するために必要な「IAM User」
IAM管理を便利にする「IAM Group」「IAM Policy」
コラム)なぜAWSを使い始めた時に「IAM User」を準備するのか
(詳細部分)
IAM Roleを作る時に考えること/設定すること
最小権限の法則に従った権限管理方法「Switch Role」
IAMを理解しないと、AWSで何もできない
https://gyazo.com/dcb7f62f06333870a6b62e601635ba61
AWS Computing Resourceはそれ単体ではAWS内で何もできない
最小権限の法則。予期せぬ大事故を未然に予防する
defaultでは権限がないから。付与しないといけない
「AWS ResourceにActionをする権限」を付与しないといけない
AWS Resourceに権限を付与する仕組みがIAM Role
IAMで再頻出の「IAM Role」
https://gyazo.com/7dd5a0f975977f265670c2687ec0ff2d
AWSを使う上で必須知識。
IAM Roleで定義するものは2つ
「誰が使えるRoleか?」
「何にどういうアクションをできるか?」
例)iam role.icondatalake-ds-proper
DSGroup member(tsawada.iconなど)が使えるRole
「Datalakeで利用するAWS Resource」に「分析で必要なAction」ができる
AWSを人が操作するために必要な「IAM User」
https://gyazo.com/31f015c9a5386aa74f03a68aea2fff8c
IAM Roleと似たモノにIAM Userがある
ほぼ同じ
IAM Userを使わないといけないのは「外部の人/ComputerがAWSへAccessする」とき
IAM UserだとIAM Roleと定義するものが少し変わる
「誰が使えるRole(今回だとUser)か?」という部分
AWSに外部からaccessする方法にある通り2種類ある
IAM管理を便利にする「IAM Group」「IAM Policy」
https://gyazo.com/6041be67dc10690b11f15555e623ba7d
IAMでは、大きく4つの機能がある
IAM Role、IAM User
IAM Group、IAM Policy
IAM Group
IAM Userをまとめ上げる機能
「BA Group」のように特定部署/チームにまとめて「権限付与」したい場合に便利
しかしNetprotectionsではほぼ使わない
Switch RoleをMainとしたAWS multi account戦略を取っているため
IAM Policy
頻出する「Policy(何にどういうアクションをできるか?)」をテンプレ化する機能
Policyには3種類ある
inline Policy
IAM Role, IAM Group, IAM Userの設定画面で「直接記載」するもの
custom Policy
IAM Policyとして自分たちで作り、管理するもの
AWS mamaged Policy
AWSがあらかじめ準備してくれるもの
AWSがversion upした時は勝手にPolicyもupdateしてくれるので便利
一方で「細かいチューニングが効かない」ので、ちゃんとセキュリティ環境を作るならばcustom policyを作る必要がある
コラム)なぜAWSを使い始めた時に「IAM User」を準備するのか
https://gyazo.com/a56efacd56edef77d2fc041d7d1ccec9
AWS accountを作成すると、AWS management Consoleに自動遷移する
何も設定していないと「root」でloginすることになる
rootはAWS accountで何でもできる。
account全削除はもちろん
もしlogin情報(mail address / password)が漏れると…完全に悪用される
最初にクレカ登録するから
悪意ある人が…激しい使い方をして数千万円の請求が来かねない
account作成したらまず、「自分が普段使うためのIAM User」を作成する
rootにはMFA認証をかけて…「ID/Passwordが流出」してものっとられないようにする
普段は「Administrator権限(ほぼ何でもできる)」を付与したIAM Userを利用する
(この権限も非推奨)
(手塩にかけて育てたProgramを間違えて消さないようにする)
IAM Roleを作る時に考えること/設定すること
https://gyazo.com/ecbd93ba3a925b9cc5136443333ee490
IAM Roleではjson formatで各種権限を設定する
「誰が使えるRoleか?」
ここで、AWS Computing Resource/IAM Userを指定する
「何にどういうアクションをできるか」
ここで、できることを細かく設定する
以下のサイトを見ながら設定する
AWS のサービスのアクション、リソース、および条件キー - AWS Identity and Access Management
最小権限の法則に従った権限管理方法「Switch Role」
https://gyazo.com/6d8165f2bc5da3cfc8e455f621f5e367
IAM Userのみで権限管理するのは難しい
基本的に「ひと1人に対してひとつのIAM User」を作る
BAのカタリストだと…「AWS Resourceを自在に生成/削除もできる権限」を持っちゃう
常に緊張しながら操作することになる
「ちょっとした操作ミスでAWS resource全削除」しないように
Switch Roleを使うと、この問題がクリアできる
「今やりたいこと(目的)」に合わせて、最小権限をつける
目的別に IAM Roleを作る。
作業ごとに作られたRoleをSwitchしながら、AWSを使っていく